Linear Kalman Filter 筆記


Posted by Po-Jen on 2021-04-11

前言

Kalman filter 在非常多需要 estimation 的問題中都會用到,例如自駕車、Video Stabilization(結合 Gyroscope 跟 Camera) 跟許許多多結合多感測器的應用中都會用到。它的第一個應用在 1960 年代,用在美國登月的阿波羅計畫,非常的威猛,今天就從一個挺簡單的學習資源(見延伸閱讀一)來學習,把筆記寫下來。

為何要使用 Kalman Filter?

Kalman filter 主要用在兩種情況:

  1. 沒有辦法直接測量到自己想量的變數,只能量到間接的變數
  2. 有一種或多種 sensor,但各種 sensor 都有一些誤差

State Observers

這個影片說明了 Kalman filter 第一種的使用情境:沒有辦法直接測量到自己想量的變數,只能量到間接的變數。

場景

這邊一樣用測量火箭推進噴射口的溫度為例,因為我們不能把 sensor 放在噴射口內(會融化),所以無法量測到噴射口內的溫度 T_in,只能測量噴射口外的溫度 T_ext:

假設我們對這個系統有建立一個數學模型,就可以透過輸入的燃料量 - W_fuel,來計算 T_ext 的估計值 - T_ext_hat,同時也假設這個數學模型可以估計出內部的溫度 T_in_hat。

接下來的目標,就是希望可以減少量測值 T_ext 跟估計值 T_ext_hat 的差別,這樣就能減少 T_in_hat 跟實際的內部溫度 T_in 的差別:

Feedback control 概念

想要 minimize T_in-T_in_hat 的概念,其實就已經接到了 feedback control,我們可以用一個簡單的 gain K,讓 T_ext-T_ext_hat 乘上一個 K,表示 T_in-T_in_hat 的誤差,使得 T_in-T_in_hat 的誤差可以縮小。概念上就是,既然我們只量得到 T_ext-T_ext_hat,那就想辦法用 T_ext-T_ext_hat 來當作縮小 T_in-T_in_hat 的本錢。當然這邊有個重要的假設,就是 K * (T_ext-T_ext_hat) 可以 model

如果把 W_fuel generalize 成 u,然後把數學 model 也寫出來(這邊的符號有個地方容易誤解,x_dot 指的是下一個時刻的 x 值,所以 A 描述現在的 x 怎麼傳遞到下一時刻,然後 B 描述 input u 怎麼影響下一時刻的狀態 x_dot),我們就可以推導出數學式:

而只要 A-KC < 0,就能確保 convergence:

數學推導要注意的點

我個人對上面的數學細節並沒有很深入去探討,不過影面下方有個留言引起我的注意,有興趣的讀者可以深入研究:

Oversimplification may lead to incorrect information. First : the eigenvalues of A-KC should have negative real parts , not that A-KC should be < 0, this is only true for the trivial uninteresting special case of a single state system . Second: K is a must in cases where the original system is unstable, i.e. A has eigenvalues of positive real parts, otherwise the error signal will grow without bound in the absence of K as the error dynamics is now governed by A . It’s important to point out that observers are also needed in the design of unstable systems.

Dr.Omar El-Ghezawi, the University of Jordan, Amman, Jordan

累了嗎?聽首歌休息一下吧

Real Thing

Optimal State Estimator

這個影片說明了 Kalman filter 第二種的使用情境:有一種或多種 sensor,但各種 sensor 都有一些誤差。

場景

假設有個比賽,給你一台有 GPS 的自駕車,要求你在 100 種地形上都跑 1 公里:

輸贏的標準是,100 次綜合起來離 1 公里的目標最近,且 variance 最小的人就贏:

結合 estimation 跟 measurement 的直觀概念

我們先假設輸入 u_k 是要求車要達到的速度,輸出 y_k 是車的位置:

因為 GPS 測量的數據會有誤差,所以需要加上一個 noise v_k。另外汽車移動中也可能遇到輪胎打滑、空氣阻力等影響,所以會有另一個 noise w_k。一般來說,兩者都可以假設是 Gaussian noise。

我們同時也考慮我們對汽車的建模,就可以用我們對汽車的建模得到估計值 x_k_hat,所以目標就是要利用不夠精準的估計值、以及有誤差的測量值,來得到汽車位置的 optimal estimate:

接著讓自駕車開始跑,隨著時間的過去,估計值的可能誤差範圍會漸漸增加(也就是越來越肥的藍色 Gaussian distribution),但幸好我們還有紅色的 measurement。當把兩者的 distribution 相乘,就可以得到灰色的 optimal state estimate。

總結

今天介紹了一個很有用的工具 - Linear Kalman Filter,雖然在現實世界中,大部分的系統都是 Non-linear 的,所以會使用更進階版本的 Kalman Filter,但 Linear Kalman Filter 是非常重要的基礎。

附上另一個簡潔的總結:

延伸閱讀

  1. Matlab - Understanding Kalman Filters
  2. 卡尔曼滤波算法思想理解 Kalman filter 第一篇
  3. 卡尔曼算法思想理解 Kalman filter 第二篇
  4. Understanding the Basis of the Kalman Filter Via a Simple and Intuitive Derivation
  5. How a Kalman filter works, in pictures











Related Posts

useRef ref callback

useRef ref callback

利用 Cloud function 製作 GitHub Apps

利用 Cloud function 製作 GitHub Apps

「新手問題」為什麼我不能下載 npm 的套件?

「新手問題」為什麼我不能下載 npm 的套件?




Newsletter




Comments